This disclosure relates generally to computer software, and in particular to a computer software architecture employing plug-in modules for displaying informational content in a user interface of one or more applications, such as a sidebar application.
A variety of software applications provide a user interface that allows users to accumulate, organize, and view content from a number of different sources. Such applications include sidebar applications, which run in a desktop environment and present content in the user interface. A user can typically customize the content in the sidebar as well as its formatting and other presentation attributes. Another type of user interface that allows users to customize content is a web page, such as a personalized home page, in which a user can select content from the Internet to display via a web browser. In this way, sidebar applications, personalized web pages, and other types of user interfaces can provide a more useful, tailored presentation of information that is relevant to each individual user.
The developers of these user interfaces allowing for the customization of content may not necessarily provide all, or any, of the content displayed on the user interface. In many cases, it may be desirable to allow third-party software developers to produce software modules that provide content for use with these applications. For example, a maker of a sidebar application may provide standard types of content with the sidebar application, such as the contents of the user's email inbox, the current performance metrics for the computer system, and a slideshow of pictures stored on the computer system. But to increase the utility of the sidebar application, the sidebar application may also accept content from “plug-in” modules made by the developer of the sidebar application or by third-party developers. For example, a provider of weather information on the Internet may produce a plug-in module that obtains selected weather information online and then presents that information through the sidebar's user interface. It can be appreciated that many other types of third-party content modules can be developed for many other useful purposes.
Plug-in architectures exist for sidebars and other types of user interfaces, where third-party content developers provide content using plug-in modules that interact with the main application. In this context, plug-in modules are software modules that obtain content and present the content to the user via the user interface of the main application. Existing plug-in architectures provide basic drawing commands and user input messages, which can be used by the software code of the plug-in module to manage the presentation of and interaction with the plug-in's content on the user interface. Because these plug-in modules manage the content display and the user interaction, the plug-ins are developed for a particular type of user interface and possibly for a particular target device. Accordingly, a plug-in developed for a sidebar application may not be suitable for providing content for other user interfaces, such as a web page, or other devices, such as a cellular phone running a WAP browser.